The present invention is in the field of data routing and delivery over a packet protocol data network, and pertains more particularly to methods and apparatus for determining the best direct routing and transport of such data over such networks.
The present invention pertains to data networks wherein data is packaged and transmitted as packets. The best known current example of such systems is the well-known Internet, used by large numbers of people and organizations for such as Internet mail delivery, proprietary data-file transfer systems, and other known data transfer services. Typically, a subscriber wishes to send information to another subscriber to a service connected to such a network. Such a service may be an e-mail service provider, a chat and data-file transfer service provider, or any other data transport service provider wherein both clients involved in a transaction subscribe and maintain and use the appropriate and compatible software programs enabling such file transfer. Such applications are adapted to communicate over a data network according to various protocols. The Internet is used extensively in this specification as an example of such a network wherein sometimes quite large data files are routinely transported over long distances. Also, systems compatible with the Internet are conventionally termed Internet protocol (IP) systems, and this terminology is used herein as well.
E-mail service providers are a good example of such services that one may subscribe to in order to send and receive data over the Internet. E-mail service providers typically provide all of the hardware and software required to operate their service, and are typically a part of an Internet Service Provider""s services. For example, a plurality of e-mail servers may be geographically distributed throughout the Internet at locations where local clients may dial-up a server and retrieve or send mail, which may include file attachments. Client software applications are generally configured to communicate with a server or servers local to the clients Internet service provider (OSP) through which the client connects to the network.
Proprietary file-transfer services use servers typically as described above. For example, IP phone programs, International Chat or file transfer applications, business networking programs, Internet video rental programs, genealogy programs, and a host of others use various systems of distributed servers. Such servers may or may not be owned by the service provider. In some cases servers are leased with more than one service provider possibly sharing one server. In many cases several servers are available to one client application as is the case with many business network applications.
Routing of data over an IP network is generally from one node to another node or from one server to another server wherein the next route-to destination address is, in many cases, the address of a next server closer to the final destination. Routers in the network are equipped with routing tables that contain information about different routes or paths through the network leading toward the final destination. A data file to be transmitted first resides in the client""s local system, and is typically uploaded to an Internet-connected local server for routing. The local server may negotiate under such protocols as RSVP a route to a next server that is closer to the intended destination, and so on, until the data arrives at the end server which stores the information for retrieval by the receiving client. As the terminology packet implies, data to be transmitted is packaged as a series of packets, including accompanying identification and data, and the packets for a particularly large block of data may or may not follow the same route. At the destination end, separate packets are reorganized into a copy of the original file.
Depending on the distance from a sending client to a receiving client, there may be many servers which must store the data file and negotiate routes to a subsequent server before the data file may be sent on. These segments wherein the message or data file pauses are known as hops in the art. For example, for a data file to move from a source server to an end server, many pauses or hops may be experienced along the way. A gateway router linking two separate networks would comprise one hop and so on.
A problem with the current art is that large files may take a much longer time to arrive at the intended destination than a small file. Many companies place constraints on the data size of single transfer events because of limited storage space available in servers and during periods of heavy network traffic. Server storage capacities can be taxed if many large files are being stored while waiting on further routing instructions. Servers can sometimes become overloaded with data and crash, hence the phrase in the art, the server is down. Also, random distribution of packets may cause weak links in an unbalanced system to get clogged up, which can lead to the loss of packet, which ultimately leads to additional routing attempts, which in turn leads to more congestion.
As described briefly above, a large data file is broken down into many smaller data packets for transport. Each data packet contains the appropriate addressing information required to facilitate routing. Because data files travel as data packets, large data files comprising many packets take much longer to transport than small files comprising only a few packets. If a server goes down while a large file is being transferred, some of the file may not arrive, causing further delay when the server is up again. Those with skill in the art of IP network data-transfer will readily understand that much improvement is needed in the way data routing is accomplished over a large and busy IP network.
What is clearly needed is a method and apparatus that will greatly facilitate transfer of large blocks of data or data streams over packet-style data networks.
In a preferred embodiment of the present invention a method for expediting transmission of data in a packet-oriented data network is provided, comprising steps of (a) spawning an executable software agent associated with the data at a source system; (b) providing the software agent with at least minimal destination information for the data; (c) transmitting the agent in lieu of the data associated with the agent by one or more routes to the destination; (d) collecting information on the one or more routes by the agent at nodes along the one or more routes to the destination; and (e) determining a best route using the information collected by the agent.
In an alternative embodiment there is a further step (f) for transmitting the data associated with the agent to the destination by the best route determined in step (e). In some instances the data associated with the agent is stored at the source server while the agent is spawned and exercised. In other instances the data associated with the server is stored at a client""s station connected to the source server, and the client""s station notifies the source server of the presence of data to be transmitted, and wherein the data is uploaded to the source server only after the agent process is complete.
In other alternative embodiments the agent collects validation information at the destination server, and returns the validation information to the source server.
In another aspect of the invention an enhanced Internet-connected source server is provided, comprising an Internet port; at least one connected client station; and a code set adapted to spawn a software agent enabled to travel the Internet and to collect information regarding the routes traveled. The software agent (i) is spawned in response to data to be transmitted by the source server to a destination, (ii) is associated with the data by at least the data""s destination, and (iii) is sent in lieu of the data by various routes to the destination before the data is transmitted. The routing information that is collected by the agent is used in transmission of the data.
In some embodiments the data to be transmitted is held at the client station, the client station sends a request for an agent to the source server, and the source server spawns the agent in response to the request from the client station. In some cases the agent is spawned in response to data being uploaded from the client station to the source server, according to preset criteria concerning the data. In other instances the spawned agent is enabled to negotiate reserved bandwidth for the associated data at intermediate servers. Also in some embodiments the spawned agent is enabled to establish validation of recipient at the destination, and to provide the validation to the source server.
In yet another aspect a system for data transmission is provided, comprising a source server having a first port to a data network; a destination server having a second port to the data network; and a set of one or more routes through intermediate stations from the source server to the destination server. In this embodiment the source server is adapted to spawn a software agent in response to and associated with data to be transmitted from the source server to the destination server, the data meeting preset criteria, and to send the agent by more than one of the one or more routes to the destination server, and wherein the agent is adapted to collect data on the alternative routes traveled.
In some embodiments of the system the source server uses the information collected by the agent to route the associated data to the destination server. In others the agent is further adapted to negotiate validation information regarding destination at the destination server, and to return the validation information to the source server.
Software agents transmitted in lieu of data provide a way, for the first time, to select a best-fit route for data to a destination, and also to obtain secure and accurate destination validation. Accordingly, an agent can arrange with specifically anticipated or encountered servers for highly secure transmissions of extremely proprietary data if the agent can identify and negotiate the necessary protocols and passwords. Methods and apparatus for accomplishing the invention are described in enabling detail below.